package com.hshoesmall.demo.model.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;

@Data//注在类上，提供类的get、set、equals、hashCode、toString等方法
@Builder
//@Builder 会生成一个全参构造方法，因此就没有了无参构造方法，但当我们遇到需要无参构造方法时就会发生问题，
// 这个时候手写或者加上 @NoArgsConstructor 都会报错，两种解决方案
@TableName("mall_users")//用来将指定的数据库表和 JavaBean 进行映射
@NoArgsConstructor//注在类上，提供类的无参构造，配合@Builder
@AllArgsConstructor//注在类上，提供类的全参构造，配合@Builder
@Accessors(chain = true)
//（1）该注解主要作用是：当属性字段在生成 getter 和 setter 方法时，做一些相关的设置。
//（2）当它可作用于类上时，修饰类中所有字段，当作用于具体字段时，只对该字段有效。
//（3）chain 不写默认为false，当该值为 true 时，对应字段的 setter 方法调用后，会返回当前对象。
public class ShoesUser implements Serializable {
    private static final long serialVersionUID = -5051120337175047163L;
    //该注解用于将某个成员变量指定为数据表主键，使得id为数据表主键
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private String id;

    //用户账号
    @TableField("uaccount")//用于标识非主键的字段。将数据库列与 JavaBean 中的属性进行映射
    private String uaccount;

    //用户是否删除
    @Builder.Default//为成员变量赋默认值
    @TableField("udelete")
    private boolean udelete = false;

    //用户邮箱
    @TableField("uemail")
    private String uemail;

    //用户性别
    @TableField("ugender")
    private String ugender;

    //用户id
    @Builder.Default
    @TableField("uid")
    private int uid = 0;

    //用户信息
    @TableField("uinfo")
    private String uinfo;

    //用户积分
    @Builder.Default
    @TableField("uintegral")
    private int uintegral = 0;

    //用户名
    @TableField("uname")
    private String uname;

    //用户密码
    @TableField("upwd")
    private String upwd;

    //用户确认密码
    @TableField("upwdans")
    private String upwdans;

    //用户密码问题
    @TableField("upwdask")
    private String upwdask;

    //用户注册时间
    @TableField("uregtime")
    private String uregtime;

    //用户备注
    @TableField("uremarks")
    private String uremarks;

    //用户手机号码
    @TableField("utel")
    private String utel;
}
